package leetcode;

import java.util.ArrayList;
import java.util.List;


/**
 * 练习题.
 * 3. 无重复字符的最长子串
 *
 * @author :yanlixiong
 * @date :2024-02-25 11:50:00
 */
public class Exercises4 {

    public static void main(String[] args) {

        println("abcabcbb");

        println("bbbbb");

        println("pwwkew");


    }

    public static void println(String s) {
        System.out.println("输入：s=" + s);
        System.out.println("输出：" + lengthOfLongestSubstring(s));
        System.out.println("");
    }


    public static int lengthOfLongestSubstring(String s) {
        //如果字符串为空，直接返回0
        if(s==null || s.length()==0){
            return 0;
        }
        /*
         *
         * 1、将字符串按照空字符（""）切割成数组
         * 2、进行双层for循环，在外层循环中将list清空，然后添加元素；
         * 3、在内层循环中判断list集合中是否包含当前元素，如果包含直接跳过，不包含则添加
         * 4、将list的长度值返回
         *
         */
        List<String> list = new ArrayList<>();
        int length = 0;
        String[] chars = s.split("");
        for (int i = 0; i <chars.length ; i++) {
            list.clear();
            list.add(chars[i]);
            for (int j = i+1; j <chars.length ; j++) {
                if(!list.contains(chars[j])){
                    list.add(chars[j]);
                }else{
                    break;
                }
            }
            if(list.size()>length){
                length = list.size();
            }
        }
        return length;
    }
}
